//与登录注册先关【用户】
import { reqGetCode,reqUserRegister,reqUserLogin,reqUserInfo,reqLogout } from "@/api";
const state = {
    //存储验证码
    code:'',
    token: localStorage.getItem('TOKEN'),//服务器下发的token 1:服务器用来区分用户;第二:用户携带token找服务器查找用户信息
    userInfo:{},
};
const mutations = {
    GETCODE:(state,code)=>{
        state.code = code;
    },
    LONGIN:(state,token)=>{
        state.token=token
    },
    SET_USERINFO:(state,userInfo)=>{
        state.userInfo= userInfo
    },
    RESET_USERINFO:(state)=>{
        state.token='';
        state.userInfo={}
    }
}
const actions = {
     //获取验证码
     getCode:async({commit,state,dispatch},phone)=>{
          //发请求,获取验证码
          let result = await reqGetCode(phone);
          console.log(phone);
          console.log(result);
          //工作的时候，获取验证码,向服务器发请求携带手机号
          //服务器接收到手机号【java、php】相应的插件，把验证码发送到用户手机上
          //目前接口没有这个功能【花钱|省钱】
          if(result.code==200){
              commit('GETCODE',result.data);
              return 'ok';
          }else{
              return Promise.reject();
          }
     },
    //  注册用户
     userRegister:async({commit,state,dispatch},user)=>{
        //  注册用户请求
       let result=await reqUserRegister(user);
        if (result.code==200) {
            return 'ok'
        }else {
            return Promise.reject();
        }
     },
    //  登录
    login:async({commit,state,dispatch},data)=>{
        let result=await reqUserLogin(data)
        // 登录返回的结果当中有一个重要的信息--token
        console.log(result);
        if (result.code==200) {
            localStorage.setItem('TOKEN',result.data.token)
            commit("LONGIN",result.data.token);
            return 'ok'
        }else{
            return Promise.reject(result.message);
        }
    },
    // 获取到用户信息
    getUserInfo:async({commit,state,dispatch})=>{
        let result =await reqUserInfo();  
        if(result.code==200){
            commit("SET_USERINFO",result.data)
        }
    },
    // 退出登录
    logout:async({commit,state,dispatch})=>{
        // 通知服务器清除token
        let result =await reqLogout();
        if(result.code==200){
            // 清除state里面的数据
            commit("RESET_USERINFO")
            return 'ok'
        }else{
            return Promise.reject();
        }
    }
};
const getters = {};

//默认暴露:小仓库对外暴露的是对象,默认暴露
export default{
    state,
    mutations,
    actions,
    getters
}